/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package gestionnaires;

import java.util.ArrayList;
import java.util.Collection;
import javax.ejb.EJB;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;
import modeles.CategorieAge;
import modeles.CategorieProduit;
import modeles.Commentaire;
import modeles.Note;
import modeles.Photo;
import modeles.Produit;
import modeles.Tag;
import modeles.Video;

/**
 *
 * @author Christian
 */
@Stateless
public class GestionnaireProduits {

    @EJB
    private GestionnaireCommentaires gestionnaireCommentaires;
    @EJB
    private GestionnaireNotes gestionnaireNotes;
    @EJB
    private GestionnaireTags gestionnaireTags;
    @EJB
    private GestionnaireCategoriesProduits gestionnaireCategoriesProduits;
    @EJB
    private GestionnaireCategoriesAges gestionnaireCategoriesAges;
    @PersistenceContext
    private EntityManager em;

    public void creeProduitsDeTest() {
        CategorieAge ca3 = gestionnaireCategoriesAges.getCategorieByAge(3);
        CategorieAge ca7 = gestionnaireCategoriesAges.getCategorieByAge(7);
        CategorieAge ca12 = gestionnaireCategoriesAges.getCategorieByAge(12);
        CategorieAge ca16 = gestionnaireCategoriesAges.getCategorieByAge(16);
        CategorieAge ca18 = gestionnaireCategoriesAges.getCategorieByAge(18);

        CategorieProduit PC = gestionnaireCategoriesProduits.getCategorieByName("PC");
        CategorieProduit Mac = gestionnaireCategoriesProduits.getCategorieByName("MAC");
        CategorieProduit PS3 = gestionnaireCategoriesProduits.getCategorieByName("PS3");
        CategorieProduit PS2 = gestionnaireCategoriesProduits.getCategorieByName("PS2");
        CategorieProduit Xbox360 = gestionnaireCategoriesProduits.getCategorieByName("Xbox360");
        CategorieProduit Wii = gestionnaireCategoriesProduits.getCategorieByName("Wii");
        CategorieProduit DS3 = gestionnaireCategoriesProduits.getCategorieByName("3DS");
        CategorieProduit DS = gestionnaireCategoriesProduits.getCategorieByName("DS/DSi");
        CategorieProduit PSP = gestionnaireCategoriesProduits.getCategorieByName("PSP/PSPgo");

        Tag FPS = gestionnaireTags.getTagByName("FPS");
        Tag reflexion = gestionnaireTags.getTagByName("Reflexion");
        Tag gestion = gestionnaireTags.getTagByName("Gestion");
        Tag simulation = gestionnaireTags.getTagByName("Simulation");
        Tag aventure = gestionnaireTags.getTagByName("Aventure");
        Tag action = gestionnaireTags.getTagByName("Action");
        Tag infiltration = gestionnaireTags.getTagByName("Infiltration");
        Tag course = gestionnaireTags.getTagByName("Course");
        Tag jeuDeRole = gestionnaireTags.getTagByName("Jeu de role");
        Tag arcade = gestionnaireTags.getTagByName("Arcade");

        Produit p1 = new Produit("Portal 2", 49.52f, "Electronic Arts",
                "Portal 2 reprend la formule à succès combinant une jouabilité innovante, une histoire passionnante et une musique accrocheuse, qui a valu au premier opus plus de 70 récompenses et un statut de jeu culte. "
                + "Le mode Solo de Portal 2 vous présente de nouveaux personnages, des casse-tête inédits et un plus grand nombre de chambres de test. Explorez les zones inconnues des laboratoires d’Aperture Science et retrouvez GLaDOS, le système d’intelligence artificielle maléfique accompagnant les joueurs du premier épisode dans leurs aventures. "
                + "\n\n"
                + "Le mode de coopération à deux joueurs de Portal 2 comprend une campagne autonome avec un scénario unique, de nouvelles chambres de test et deux personnages inédits. Ce nouveau mode va remettre en question votre connaissance des portails. Vous devrez agir en coopération, mais surtout réfléchir en coopération."
                + "\n\n", PC, ca12);
        em.persist(new Photo(p1, "http://www.pcgen.fr/upluad-tof/big/portal-2-logo.jpg"));
        em.persist(new Photo(p1, "http://www.hdgaming.fr/wp-content/uploads/2011/02/portal.jpg"));
        FPS.addProduit(p1);
        em.persist(new Video(p1, "http://www.youtube.com/v/UgLgm_TN1gE?version=3"));
        em.persist(new Video(p1, "http://www.youtube.com/v/5THiN8szSKM?version=3"));
        reflexion.addProduit(p1);
        em.persist(p1);
        Produit p2 = new Produit(49.52f, p1, Mac);
        em.persist(new Photo(p2, "http://www.pcgen.fr/upluad-tof/big/portal-2-logo.jpg"));
        em.persist(new Photo(p2, "http://www.hdgaming.fr/wp-content/uploads/2011/02/portal.jpg"));
        em.persist(new Video(p2, "http://www.youtube.com/v/UgLgm_TN1gE?version=3"));
        em.persist(new Video(p2, "http://www.youtube.com/v/5THiN8szSKM?version=3"));
        em.persist(p2);
        Produit p3 = new Produit(51.54f, p1, PS3);
        em.persist(new Photo(p3, "http://www.pcgen.fr/upluad-tof/big/portal-2-logo.jpg"));
        em.persist(new Video(p3, "http://www.youtube.com/v/UgLgm_TN1gE?version=3"));
        em.persist(new Video(p3, "http://www.youtube.com/v/5THiN8szSKM?version=3"));
        em.persist(p3);
        Produit p4 = new Produit(53.10f, p1, Xbox360);
        em.persist(new Photo(p4, "http://www.pcgen.fr/upluad-tof/big/portal-2-logo.jpg"));
        em.persist(new Photo(p4, "http://www.hdgaming.fr/wp-content/uploads/2011/02/portal.jpg"));
        em.persist(new Video(p4, "http://www.youtube.com/v/UgLgm_TN1gE?version=3"));
        em.persist(new Video(p4, "http://www.youtube.com/v/5THiN8szSKM?version=3"));
        em.persist(p4);

        Produit p5 = new Produit("Les Sims 3", 42.50f, "Electronic Arts",
                "Les Sims 3 vous permet d'immerger des Sims vraiment uniques dans un quartier vivant et ouvert accessible depuis leur porte "
                + "\n"
                + "La liberté de jeu dans Les Sims 3 vous offrira des possibilités infinies.", PC, ca12);
        em.persist(new Photo(p5, "http://img.over-blog.com/529x482/4/06/64/55/Logo_Sims3.png"));
        em.persist(new Photo(p5, "http://kellydu83.unblog.fr/files/2008/03/sims3fake3.jpg"));
        gestion.addProduit(p5);
        simulation.addProduit(p5);
        em.persist(new Video(p5, "http://www.youtube.com/v/q4Lbu1bWJB8?version=3"));
        em.persist(new Video(p5, "http://www.youtube.com/v/UYZ7kcHyiic?version=3"));
        em.persist(p5);
        Produit p6 = new Produit(42.50f, p5, Mac);
        em.persist(new Photo(p6, "http://img.over-blog.com/529x482/4/06/64/55/Logo_Sims3.png"));
        em.persist(new Photo(p6, "http://kellydu83.unblog.fr/files/2008/03/sims3fake3.jpg"));
        em.persist(new Video(p6, "http://www.youtube.com/v/q4Lbu1bWJB8?version=3"));
        em.persist(new Video(p6, "http://www.youtube.com/v/UYZ7kcHyiic?version=3"));
        em.persist(p6);
        Produit p7 = new Produit(23.93f, p5, Wii);
        em.persist(new Photo(p7, "http://img.over-blog.com/529x482/4/06/64/55/Logo_Sims3.png"));
        em.persist(new Photo(p7, "http://kellydu83.unblog.fr/files/2008/03/sims3fake3.jpg"));
        em.persist(new Video(p7, "http://www.youtube.com/v/q4Lbu1bWJB8?version=3"));
        em.persist(new Video(p7, "http://www.youtube.com/v/UYZ7kcHyiic?version=3"));
        em.persist(p7);
        Produit p8 = new Produit(31.18f, p5, PS3);
        em.persist(new Photo(p8, "http://cd.ch-img.com/773845-les-sims-3-ps3,bWF4LTYwMHg2MDA=.jpg"));
        em.persist(new Photo(p8, "http://kellydu83.unblog.fr/files/2008/03/sims3fake3.jpg"));
        em.persist(new Photo(p8, "http://images3.wikia.nocookie.net/__cb20100521093354/sims/fr/images/9/9f/Les_Sims_3_Console_5.jpg"));
        em.persist(new Video(p8, "http://www.youtube.com/v/q4Lbu1bWJB8?version=3"));
        em.persist(new Video(p8, "http://www.youtube.com/v/UYZ7kcHyiic?version=3"));
        em.persist(p8);
        Produit p9 = new Produit(28.99f, p5, Xbox360);
        em.persist(new Photo(p9, "http://img.over-blog.com/529x482/4/06/64/55/Logo_Sims3.png"));
        em.persist(new Photo(p9, "http://kellydu83.unblog.fr/files/2008/03/sims3fake3.jpg"));
        em.persist(new Video(p9, "http://www.youtube.com/v/q4Lbu1bWJB8?version=3"));
        em.persist(new Video(p9, "http://www.youtube.com/v/UYZ7kcHyiic?version=3"));
        em.persist(p9);
        Produit p10 = new Produit(36.59f, p5, DS3);
        em.persist(new Photo(p10, "http://img.over-blog.com/529x482/4/06/64/55/Logo_Sims3.png"));
        em.persist(new Photo(p10, "http://kellydu83.unblog.fr/files/2008/03/sims3fake3.jpg"));
        em.persist(new Video(p10, "http://www.youtube.com/v/q4Lbu1bWJB8?version=3"));
        em.persist(new Video(p10, "http://www.youtube.com/v/UYZ7kcHyiic?version=3"));
        em.persist(p10);
        Produit p11 = new Produit(19.99f, p5, DS);
        em.persist(new Photo(p11, "http://img.over-blog.com/529x482/4/06/64/55/Logo_Sims3.png"));
        em.persist(new Photo(p11, "http://kellydu83.unblog.fr/files/2008/03/sims3fake3.jpg"));
        em.persist(new Video(p11, "http://www.youtube.com/v/q4Lbu1bWJB8?version=3"));
        em.persist(new Video(p11, "http://www.youtube.com/v/UYZ7kcHyiic?version=3"));
        em.persist(p11);

        Produit p12 = new Produit("Call of Duty : Black Ops", 44.05f, "Activision",
                "Call of Duty : Black Ops, vous emmène derrière les lignes ennemies entre les années 50 et 70, l’une des périodes les plus dangereuses de l’histoire."
                + "\n"
                + "Le jeu vous propulse dans les bottes des unités d’élite des forces spéciales."
                + "\n"
                + "Vous découvrirez la face cachée de la guerre, mènerez des opérations secrètes et combattrez au cœur de conflits au Laos, en Russie, au Vietnam et à bien d’autre points du globe.", PC, ca18);
        em.persist(new Photo(p12, "http://www.atout-geek.com/wp-content/uploads/2010/11/Call-of-Duty-Black-Ops.jpg"));
        em.persist(new Photo(p12, "http://image.jeuxvideo.com/images/pc/c/a/call-of-duty-black-ops-pc-018.jpg"));
        em.persist(new Video(p12, "http://www.youtube.com/v/OtRnpC7ddv8?version=3"));
        em.persist(new Video(p12, "http://www.youtube.com/v/Pblj3JHF-Jo?version=3"));
        FPS.addProduit(p12);
        em.persist(p12);
        Produit p13 = new Produit(50.72f, p12, PS3);
        em.persist(new Photo(p13, "http://www.atout-geek.com/wp-content/uploads/2010/11/Call-of-Duty-Black-Ops.jpg"));
        em.persist(new Photo(p13, "http://image.jeuxvideo.com/images/pc/c/a/call-of-duty-black-ops-pc-018.jpg"));
        em.persist(new Video(p13, "http://www.youtube.com/v/OtRnpC7ddv8?version=3"));
        em.persist(new Video(p13, "http://www.youtube.com/v/Pblj3JHF-Jo?version=3"));
        em.persist(p13);
        Produit p14 = new Produit(50.42f, p12, Xbox360);
        em.persist(new Photo(p14, "http://www.atout-geek.com/wp-content/uploads/2010/11/Call-of-Duty-Black-Ops.jpg"));
        em.persist(new Photo(p14, "http://image.jeuxvideo.com/images/pc/c/a/call-of-duty-black-ops-pc-018.jpg"));
        em.persist(new Video(p14, "http://www.youtube.com/v/OtRnpC7ddv8?version=3"));
        em.persist(new Video(p14, "http://www.youtube.com/v/Pblj3JHF-Jo?version=3"));
        em.persist(p14);
        Produit p15 = new Produit(53.99f, p12, Wii);
        em.persist(new Photo(p15, "http://www.atout-geek.com/wp-content/uploads/2010/11/Call-of-Duty-Black-Ops.jpg"));
        em.persist(new Photo(p15, "http://image.jeuxvideo.com/images/pc/c/a/call-of-duty-black-ops-pc-018.jpg"));
        em.persist(new Video(p15, "http://www.youtube.com/v/OtRnpC7ddv8?version=3"));
        em.persist(new Video(p15, "http://www.youtube.com/v/Pblj3JHF-Jo?version=3"));
        em.persist(p15);
        Produit p16 = new Produit(39.99f, p12, DS);
        em.persist(new Photo(p16, "http://www.atout-geek.com/wp-content/uploads/2010/11/Call-of-Duty-Black-Ops.jpg"));
        em.persist(new Photo(p16, "http://image.jeuxvideo.com/images/pc/c/a/call-of-duty-black-ops-pc-018.jpg"));
        em.persist(new Video(p16, "http://www.youtube.com/v/OtRnpC7ddv8?version=3"));
        em.persist(new Video(p16, "http://www.youtube.com/v/Pblj3JHF-Jo?version=3"));
        em.persist(p16);

        Produit p17 = new Produit("Harry Potter et le prince de sang-mêlé", 6.28f, "Electronic Arts",
                "Dans Harry Potter et le Prince de Sang-Mêlé sur PC, les joueurs reviennent à Poudlard pour aider Harry à survivre à une sixième année pleine de dangers."
                + "\nIls découvriront l'identité du Prince de Sang-Mêlé, mais pourront aussi participer à des duels de sorciers, concocter des potions en tout genre, s'envoler pour mener l'équipe de Quidditch de Gryffondor à la victoire et même suivre les frasques amoureuses de Ron.", PC, ca12);
        em.persist(new Photo(p17, "http://www.numerikids.com/alpha/wp-content/uploads/2009/05/harry_potter_6_prince_de_sang_mele.jpg"));
        em.persist(new Photo(p17, "http://jeux-video.portail.free.fr/tests/playstation-3/02-07-2009/harry-potter-et-le-prince-de-sang-mele/harry-potter-et-le-prince-de-sang-mele-playstation-3-ps3-032.jpg"));
        em.persist(new Video(p17, "http://www.youtube.com/v/OFmud9yAJi4?version=3"));
        em.persist(new Video(p17, "http://www.youtube.com/v/LbHBxpn5bmU?version=3"));
        aventure.addProduit(p17);
        action.addProduit(p17);
        em.persist(p17);
        Produit p18 = new Produit(14.50f, p17, PS3);
        em.persist(new Photo(p18, "http://www.numerikids.com/alpha/wp-content/uploads/2009/05/harry_potter_6_prince_de_sang_mele.jpg"));
        em.persist(new Photo(p18, "http://jeux-video.portail.free.fr/tests/playstation-3/02-07-2009/harry-potter-et-le-prince-de-sang-mele/harry-potter-et-le-prince-de-sang-mele-playstation-3-ps3-032.jpg"));
        em.persist(new Video(p18, "http://www.youtube.com/v/OFmud9yAJi4?version=3"));
        em.persist(new Video(p18, "http://www.youtube.com/v/LbHBxpn5bmU?version=3"));
        em.persist(p18);
        Produit p19 = new Produit(9.95f, p17, PSP);
        em.persist(new Photo(p19, "http://www.numerikids.com/alpha/wp-content/uploads/2009/05/harry_potter_6_prince_de_sang_mele.jpg"));
        em.persist(new Photo(p19, "http://jeux-video.portail.free.fr/tests/playstation-3/02-07-2009/harry-potter-et-le-prince-de-sang-mele/harry-potter-et-le-prince-de-sang-mele-playstation-3-ps3-032.jpg"));
        em.persist(new Video(p19, "http://www.youtube.com/v/OFmud9yAJi4?version=3"));
        em.persist(new Video(p19, "http://www.youtube.com/v/LbHBxpn5bmU?version=3"));
        em.persist(p19);
        Produit p20 = new Produit(10.80f, p17, PS2);
        em.persist(new Photo(p20, "http://www.numerikids.com/alpha/wp-content/uploads/2009/05/harry_potter_6_prince_de_sang_mele.jpg"));
        em.persist(new Photo(p20, "http://jeux-video.portail.free.fr/tests/playstation-3/02-07-2009/harry-potter-et-le-prince-de-sang-mele/harry-potter-et-le-prince-de-sang-mele-playstation-3-ps3-032.jpg"));
        em.persist(new Video(p20, "http://www.youtube.com/v/OFmud9yAJi4?version=3"));
        em.persist(new Video(p20, "http://www.youtube.com/v/LbHBxpn5bmU?version=3"));
        em.persist(p20);
        Produit p21 = new Produit(14.90f, p17, Xbox360);
        em.persist(new Photo(p21, "http://www.numerikids.com/alpha/wp-content/uploads/2009/05/harry_potter_6_prince_de_sang_mele.jpg"));
        em.persist(new Photo(p21, "http://jeux-video.portail.free.fr/tests/playstation-3/02-07-2009/harry-potter-et-le-prince-de-sang-mele/harry-potter-et-le-prince-de-sang-mele-playstation-3-ps3-032.jpg"));
        em.persist(new Video(p21, "http://www.youtube.com/v/OFmud9yAJi4?version=3"));
        em.persist(new Video(p21, "http://www.youtube.com/v/LbHBxpn5bmU?version=3"));
        em.persist(p21);
        Produit p22 = new Produit(16.90f, p17, Wii);
        em.persist(new Photo(p22, "http://www.numerikids.com/alpha/wp-content/uploads/2009/05/harry_potter_6_prince_de_sang_mele.jpg"));
        em.persist(new Photo(p22, "http://jeux-video.portail.free.fr/tests/playstation-3/02-07-2009/harry-potter-et-le-prince-de-sang-mele/harry-potter-et-le-prince-de-sang-mele-playstation-3-ps3-032.jpg"));
        em.persist(new Video(p22, "http://www.youtube.com/v/OFmud9yAJi4?version=3"));
        em.persist(new Video(p22, "http://www.youtube.com/v/LbHBxpn5bmU?version=3"));
        em.persist(p22);
        Produit p23 = new Produit(10.90f, p17, DS);
        em.persist(new Photo(p23, "http://www.numerikids.com/alpha/wp-content/uploads/2009/05/harry_potter_6_prince_de_sang_mele.jpg"));
        em.persist(new Photo(p23, "http://jeux-video.portail.free.fr/tests/playstation-3/02-07-2009/harry-potter-et-le-prince-de-sang-mele/harry-potter-et-le-prince-de-sang-mele-playstation-3-ps3-032.jpg"));
        em.persist(new Video(p23, "http://www.youtube.com/v/OFmud9yAJi4?version=3"));
        em.persist(new Video(p23, "http://www.youtube.com/v/LbHBxpn5bmU?version=3"));
        em.persist(p23);

        Produit p24 = new Produit("Brink", 39.99f, "Bethesda",
                "Brink est un FPS immersif. Son gameplay est un brillant mélange de jeu solo, en co-op et mutlijoueurs. Vous pouvez ainsi développer votre personnage en jouant seul, avec des amis ou contre d'autres joueurs en ligne. Dans cette lutte pour votre survie et celle du dernier refuge de l'humanité, c'est vous qui décidez du rôle que vous allez tenir. Brink vous offre une combinaison dynamique de champs de bataille, d'options de personnalisation très avancées et d'un système de commande innovant, qui ne manquera pas de vous captiver."
                + "\n"
                + "Construite dans un futur proche dans le cadre d'un projet écologique contemporain, l'Arche est bâtie sur un modèle de développement durable. L'énorme cité flottante accueille rapidement une communauté de scientifiques et d'intellectuels décidés à faire de cette vision une réalité, pendant que ses riches bienfaiteurs cherchent à développer un véritable paradis sur terre."
                + "\n"
                + "Mais bientôt, la menace environnementale globale se concrétise : les glaciers fondent, le niveau des océans augmente et la survie même de l'humanité est remise en question. Des milliers de réfugiés venus du monde entier cherchent à rejoindre l'Arche. Ils s'organisent comme ils le peuvent, tandis que les fondateurs et leurs descendants tentent de maintenir l'équilibre de la cité flottante."
                + "\n"
                + "Aujourd'hui, l'Arche a perdu tout contact avec ce qu'il reste du continent et vit en totale autarcie. Alors que ses ressources prétendument durables s'amenuisent, l'équilibre des pouvoirs menace de faire basculer la population vers une guerre civile."
                + "\n"
                + "Dans un contexte chaque jour plus tendu, les forces de la Résistance et de la Sécurité s'enlisent dans un conflit acharné pour le contrôle de l'Arche. Quel camp choisirez-vous ?", PC, ca16);
        em.persist(new Photo(p24, "http://www.play3-live.com/screens/brink/brink-brink-wallpaper-1280x1024-1260653121.jpg"));
        em.persist(new Photo(p24, "http://walls.themespsp.fr/wp-content/uploads/2010/02/Brink_15.jpg"));
        em.persist(new Video(p24, "http://www.youtube.com/v/s-kVnw4RA80?version=3"));
        em.persist(new Video(p24, "http://www.youtube.com/v/kSXr_85Ctm8?version=3"));
        FPS.addProduit(p24);
        em.persist(p24);
        Produit p25 = new Produit(50.75f, p24, Xbox360);
        em.persist(new Photo(p25, "http://www.play3-live.com/screens/brink/brink-brink-wallpaper-1280x1024-1260653121.jpg"));
        em.persist(new Photo(p25, "http://walls.themespsp.fr/wp-content/uploads/2010/02/Brink_15.jpg"));
        em.persist(new Video(p25, "http://www.youtube.com/v/s-kVnw4RA80?version=3"));
        em.persist(new Video(p25, "http://www.youtube.com/v/kSXr_85Ctm8?version=3"));
        em.persist(p25);
        Produit p26 = new Produit(50.75f, p24, PS3);
        em.persist(new Photo(p26, "http://www.play3-live.com/screens/brink/brink-brink-wallpaper-1280x1024-1260653121.jpg"));
        em.persist(new Photo(p26, "http://walls.themespsp.fr/wp-content/uploads/2010/02/Brink_15.jpg"));
        em.persist(new Video(p26, "http://www.youtube.com/v/s-kVnw4RA80?version=3"));
        em.persist(new Video(p26, "http://www.youtube.com/v/kSXr_85Ctm8?version=3"));
        em.persist(p26);

        Produit p27 = new Produit("Assassin's Creed : Brotherhood", 39.99f, "Ubisoft",
                "Incarnez Ezio, un légendaire Maître Assassin, dans son combat acharné contre le puissant Ordre des Templiers. Pour porter un coup fatal à l'ennemi, Ezio doit se rendre dans la plus grande ville d'Italie : Rome. Un lieu de pouvoir, d'avidité et de corruption."
                + "\n"
                + "Pour triompher des tyrans corrompus qui s'y terrent, Ezio devra non seulement montrer qu'il est un puissant combattant, mais aussi un meneur d'hommes : une Confrérie entière sera placée sous ses ordres. Ce n'est qu'en travaillant ensemble que les Assassins vaincront leurs ennemis jurés."
                + "\n"
                + "Découvrez un mode multijoueur inédit ! Faites votre choix parmi de nombreux personnages aux armes et aux techniques d'assassinat caractéristiques, et mesurez-vous à des joueurs du monde entier."
                + "\n"
                + "Il est temps de rejoindre la Confrérie.", PC, ca18);
        em.persist(new Photo(p27, "http://www.angelusyodason.com/WordPress/wp-content/medias//2011/01/assassins_creed_brotherhood-2.jpg"));
        em.persist(new Photo(p27, "http://www.teknologik.fr/wp-content/uploads/2010/10/assassins-creed-brotherhood.jpg"));
        em.persist(new Video(p27, "http://www.youtube.com/v/kfWbe3x2EoI?version=3"));
        em.persist(new Video(p27, "http://www.youtube.com/v/9v9V00PVXWM?version=3"));
        infiltration.addProduit(p27);
        action.addProduit(p27);
        em.persist(p27);
        Produit p28 = new Produit(39.99f, p27, Xbox360);
        em.persist(new Photo(p28, "http://www.angelusyodason.com/WordPress/wp-content/medias//2011/01/assassins_creed_brotherhood-2.jpg"));
        em.persist(new Photo(p28, "http://www.teknologik.fr/wp-content/uploads/2010/10/assassins-creed-brotherhood.jpg"));
        em.persist(new Video(p28, "http://www.youtube.com/v/kfWbe3x2EoI?version=3"));
        em.persist(new Video(p28, "http://www.youtube.com/v/9v9V00PVXWM?version=3"));
        em.persist(p28);
        Produit p29 = new Produit(39.99f, p27, PS3);
        em.persist(new Photo(p29, "http://www.angelusyodason.com/WordPress/wp-content/medias//2011/01/assassins_creed_brotherhood-2.jpg"));
        em.persist(new Photo(p29, "http://www.teknologik.fr/wp-content/uploads/2010/10/assassins-creed-brotherhood.jpg"));
        em.persist(new Video(p29, "http://www.youtube.com/v/kfWbe3x2EoI?version=3"));
        em.persist(new Video(p29, "http://www.youtube.com/v/9v9V00PVXWM?version=3"));
        em.persist(p29);

        Produit p30 = new Produit("L.A. NOIRE", 45.49f, "Rockstar",
                "L.A. Noire raconte une histoire de détective se déroulant à Los Angeles, à la fin des années 1940"
                + ", dans un contexte d'après-guerre où se mêlent corruption, drogues et musique jazz. "
                + "\n"
                + "Ce jeu croise action, enquête et narration complexe, tout en présentant une série de meurtres horribles à élucider.", PS3, ca18);
        em.persist(new Photo(p30, "http://www.everythingaming.com/wp-content/uploads/2011/03/la-noire-logo.jpg"));
        em.persist(new Photo(p30, "http://cdn4.digitaltrends.com/wp-content/uploads/2010/11/la-noire-00.jpg"));
        em.persist(new Video(p30, "http://www.youtube.com/v/ew1e_eVMXy0?version=3"));
        em.persist(new Video(p30, "http://www.youtube.com/v/jeYym1U226M?version=3"));
        aventure.addProduit(p30);
        action.addProduit(p30);
        em.persist(p30);
        Produit p31 = new Produit(45.49f, p30, Xbox360);
        em.persist(new Photo(p31, "http://www.everythingaming.com/wp-content/uploads/2011/03/la-noire-logo.jpg"));
        em.persist(new Photo(p31, "http://cdn4.digitaltrends.com/wp-content/uploads/2010/11/la-noire-00.jpg"));
        em.persist(new Video(p31, "http://www.youtube.com/v/ew1e_eVMXy0?version=3"));
        em.persist(new Video(p31, "http://www.youtube.com/v/jeYym1U226M?version=3"));
        em.persist(p31);

        Produit p32 = new Produit("DIRT 3", 39.99f, "Namco",
                "DiRT 3 est un jeu de course sur PC. Prenez le volant de l'un des soixante véhicules disponibles dont la Mini Cooper S1275 ou la Lancia Stratos HF Integrale"
                + ", et participez à l'un des 6 modes de jeu en solo ou en écran splitté."
                + "\n"
                + "Un multijoueur online est également présent, et de nouveaux modes comme le Gymkhana ont fait leur apparition.", PC, ca12);
        em.persist(new Photo(p32, "http://www.maxigadget.com/wp-content/uploads/2011/05/dirt3-trailer2.jpg"));
        em.persist(new Photo(p32, "http://www.xbox360france.com/upload/Gallery/DIRT3_2.jpg"));
        em.persist(new Video(p32, "http://www.youtube.com/v/mduzTcQ0SXM?version=3"));
        em.persist(new Video(p32, "http://www.youtube.com/v/wZ0TOjomgt4?version=3"));
        course.addProduit(p32);
        em.persist(p32);
        Produit p33 = new Produit(45.49f, p32, Xbox360);
        em.persist(new Photo(p33, "http://www.maxigadget.com/wp-content/uploads/2011/05/dirt3-trailer2.jpg"));
        em.persist(new Photo(p33, "http://www.xbox360france.com/upload/Gallery/DIRT3_2.jpg"));
        em.persist(new Video(p33, "http://www.youtube.com/v/mduzTcQ0SXM?version=3"));
        em.persist(new Video(p33, "http://www.youtube.com/v/wZ0TOjomgt4?version=3"));
        em.persist(p33);
        Produit p34 = new Produit(45.49f, p32, PS3);
        em.persist(new Photo(p34, "http://www.maxigadget.com/wp-content/uploads/2011/05/dirt3-trailer2.jpg"));
        em.persist(new Photo(p34, "http://www.xbox360france.com/upload/Gallery/DIRT3_2.jpg"));
        em.persist(new Video(p34, "http://www.youtube.com/v/mduzTcQ0SXM?version=3"));
        em.persist(new Video(p34, "http://www.youtube.com/v/wZ0TOjomgt4?version=3"));
        em.persist(p34);

        Produit p35 = new Produit("Fable 3", 36.99f, "Microsoft",
                "Fable III est un jeu de rôle. 50 ans se sont écoulés depuis le deuxième opus"
                + ", et le monde d'Albion est devenu industrialisé et régi d'une main de fer par un tyran."
                + "\n"
                + "Le joueur pourra aussi créer son personnage ou l'importer du précédent volet dans ce monde métamorphosé.", PC, ca16);
        em.persist(new Photo(p35, "http://img.wikio-experts.com/0/00/05/89/2010-11/Fable-3.jpg"));
        em.persist(new Photo(p35, "http://img.over-blog.com/630x470-000000/2/95/38/70//Jeux-Videos/fable-3.jpg"));
        em.persist(new Video(p35, "http://www.youtube.com/v/j1EnL52NwpY?version=3"));
        em.persist(new Video(p35, "http://www.youtube.com/v/lpR2Uy2VLMc?version=3"));
        action.addProduit(p35);
        jeuDeRole.addProduit(p35);
        em.persist(p35);
        Produit p36 = new Produit(36.50f, p35, Xbox360);
        em.persist(new Photo(p36, "http://img.wikio-experts.com/0/00/05/89/2010-11/Fable-3.jpg"));
        em.persist(new Photo(p36, "http://img.over-blog.com/630x470-000000/2/95/38/70//Jeux-Videos/fable-3.jpg"));
        em.persist(new Video(p36, "http://www.youtube.com/v/j1EnL52NwpY?version=3"));
        em.persist(new Video(p36, "http://www.youtube.com/v/lpR2Uy2VLMc?version=3"));
        em.persist(p36);

        Produit p37 = new Produit("Duke Nukem forever", 36.99f, "Take 2",
                "Duke Nukem Forever est un jeu de tir à la première personne. "
                + "Si le héros de Duke Nukem exterminait ses premiers aliens dès 1991 "
                + "c'est surtout Duke Nukem 3D qui rendit le personnage célèbre en 1996."
                + "\n"
                + "Bien connu pour son sens de l'humour et sa finesse somme toute poétique, "
                + "le grand blond aux lunettes noires revient des années plus tard pour le plus grand plaisir de ses fans !", PC, ca18);
        em.persist(new Photo(p37, "http://www.lemagjeuxvideo.com/wp-content/uploads/2011/01/Duke-Nukem-Forever-logo.jpg"));
        em.persist(new Photo(p37, "http://www.missgeekette.net/wp-content/uploads/2009/05/dukenukem3d.jpg"));
        em.persist(new Video(p37, "http://www.youtube.com/v/mduzTcQ0SXM?version=3"));
        em.persist(new Video(p37, "http://www.youtube.com/v/rTwTosC4EBs?version=3"));
        FPS.addProduit(p37);
        em.persist(p37);
        Produit p38 = new Produit(49.99f, p37, Xbox360);
        em.persist(new Photo(p38, "http://www.lemagjeuxvideo.com/wp-content/uploads/2011/01/Duke-Nukem-Forever-logo.jpg"));
        em.persist(new Photo(p38, "http://www.missgeekette.net/wp-content/uploads/2009/05/dukenukem3d.jpg"));
        em.persist(new Video(p38, "http://www.youtube.com/v/mduzTcQ0SXM?version=3"));
        em.persist(new Video(p38, "http://www.youtube.com/v/rTwTosC4EBs?version=3"));
        em.persist(p38);
        Produit p39 = new Produit(45.49f, p37, PS3);
        em.persist(new Photo(p39, "http://www.lemagjeuxvideo.com/wp-content/uploads/2011/01/Duke-Nukem-Forever-logo.jpg"));
        em.persist(new Photo(p39, "http://www.missgeekette.net/wp-content/uploads/2009/05/dukenukem3d.jpg"));
        em.persist(new Video(p39, "http://www.youtube.com/v/mduzTcQ0SXM?version=3"));
        em.persist(new Video(p39, "http://www.youtube.com/v/rTwTosC4EBs?version=3"));
        em.persist(p39);

        Produit p40 = new Produit("Crysis 2", 41.69f, "Electronic Arts",
                "Crysis 2 est un jeu de tir à la première personne développé par Crytek. "
                + "Censé se dérouler 3 ans après les événements du premier volet, le soft nous entraîne dans la ville de New York, "
                + "en proie à une invasion extraterrestre."
                + "\n"
                + "Dans la peau du béret vert, le joueur doit exploiter les capacités de sa combinaison high-tech pour survivre "
                + "dans cette jungle urbaine où les ennemis les plus redoutables ne sont pas forcément ceux auxquels on pense.", PC, ca16);
        em.persist(new Photo(p40, "http://img.extremepc.fr/2011/jeux-video/crysis-2-crytek-pc.jpg"));
        em.persist(new Photo(p40, "http://www.eklecty-city.fr/wp-content/uploads/2010/06/Crysis-2.jpg"));
        em.persist(new Video(p40, "http://www.youtube.com/v/pQoVBxEhizE?version=3"));
        em.persist(new Video(p40, "http://www.youtube.com/v/53PTSLgKYUI?version=3"));
        FPS.addProduit(p40);
        em.persist(p40);
        Produit p41 = new Produit(47.97f, p40, Xbox360);
        em.persist(new Photo(p41, "http://img.extremepc.fr/2011/jeux-video/crysis-2-crytek-pc.jpg"));
        em.persist(new Photo(p41, "http://www.eklecty-city.fr/wp-content/uploads/2010/06/Crysis-2.jpg"));
        em.persist(new Video(p41, "http://www.youtube.com/v/pQoVBxEhizE?version=3"));
        em.persist(new Video(p41, "http://www.youtube.com/v/53PTSLgKYUI?version=3"));
        em.persist(p41);
        Produit p42 = new Produit(44.99f, p40, PS3);
        em.persist(new Photo(p42, "http://img.extremepc.fr/2011/jeux-video/crysis-2-crytek-pc.jpg"));
        em.persist(new Photo(p42, "http://www.eklecty-city.fr/wp-content/uploads/2010/06/Crysis-2.jpg"));
        em.persist(new Video(p42, "http://www.youtube.com/v/pQoVBxEhizE?version=3"));
        em.persist(new Video(p42, "http://www.youtube.com/v/53PTSLgKYUI?version=3"));
        em.persist(p42);

        Produit p43 = new Produit("Shift 2 : Unleashed", 39.99f, "Electronic Arts",
                "Shift 2 Unleashed est un jeu de simulation de courses. Le système Autolog est présent, "
                + "ce qui vous permet d'être connecté aux autres joueurs et de voir leurs statistiques."
                + "\n"
                + "La gestion des dégâts concerne aussi bien les voitures que les pistes, "
                + "et vous pourrez prendre le volant pour déjouer tous les pièges auxquels vous ferez face.", PC, ca3);
        em.persist(new Photo(p43, "http://www.lemagjeuxvideo.com/wp-content/uploads/2011/01/NFS-Shift-2-Unleashed.jpg"));
        em.persist(new Photo(p43, "http://www.planete-gt.com/wp-content/uploads/2010/11/shift-2-unleashed-7.jpg"));
        em.persist(new Video(p43, "http://www.youtube.com/v/HWLjlMcZzz4?version=3"));
        em.persist(new Video(p43, "http://www.youtube.com/v/f7itg-il03Y?version=3"));
        course.addProduit(p43);
        simulation.addProduit(p43);
        em.persist(p43);
        Produit p44 = new Produit(53.40f, p43, Xbox360);
        em.persist(new Photo(p44, "http://www.lemagjeuxvideo.com/wp-content/uploads/2011/01/NFS-Shift-2-Unleashed.jpg"));
        em.persist(new Photo(p44, "http://www.planete-gt.com/wp-content/uploads/2010/11/shift-2-unleashed-7.jpg"));
        em.persist(new Video(p44, "http://www.youtube.com/v/HWLjlMcZzz4?version=3"));
        em.persist(new Video(p44, "http://www.youtube.com/v/f7itg-il03Y?version=3"));
        em.persist(p44);
        Produit p45 = new Produit(47.49f, p43, PS3);
        em.persist(new Photo(p45, "http://www.lemagjeuxvideo.com/wp-content/uploads/2011/01/NFS-Shift-2-Unleashed.jpg"));
        em.persist(new Photo(p45, "http://www.planete-gt.com/wp-content/uploads/2010/11/shift-2-unleashed-7.jpg"));
        em.persist(new Video(p45, "http://www.youtube.com/v/HWLjlMcZzz4?version=3"));
        em.persist(new Video(p45, "http://www.youtube.com/v/f7itg-il03Y?version=3"));
        em.persist(p45);

        Produit p46 = new Produit("Need for speed : hot pursuit", 19.99f, "Electronic Arts",
                "Need for Speed : Hot Pursuit marque le retour de la police jouable dans la série NFS. "
                + "Sur une centaine de courses, l'utilisateur peut incarner tantôt les forces de l'ordre, tantôt les fuyards, "
                + "les deux classes possédant chacune quatre compétences (turbo, herses, IEM, barrages routiers...)."
                + "\n"
                + "Soixante voitures doivent être débloquées course après course.", PC, ca7);
        em.persist(new Photo(p46, "http://www.planete-gt.com/wp-content/uploads/2010/06/need_for_speed_hot_pursuit.jpg"));
        em.persist(new Photo(p46, "http://images.caradisiac.com/logos/0/7/2/5/150725/S7-Need-for-Speed-Hot-Pursuit-derniere-video-avant-le-test-63497.jpg"));
        em.persist(new Video(p46, "http://www.youtube.com/v/w06n-ui79tM?version=3"));
        em.persist(new Video(p46, "http://www.youtube.com/v/e_dc5e2eFLU?version=3"));
        course.addProduit(p46);
        arcade.addProduit(p46);
        em.persist(p46);
        Produit p47 = new Produit(29.99f, p46, Xbox360);
        em.persist(new Photo(p47, "http://www.planete-gt.com/wp-content/uploads/2010/06/need_for_speed_hot_pursuit.jpg"));
        em.persist(new Photo(p47, "http://images.caradisiac.com/logos/0/7/2/5/150725/S7-Need-for-Speed-Hot-Pursuit-derniere-video-avant-le-test-63497.jpg"));
        em.persist(new Video(p47, "http://www.youtube.com/v/w06n-ui79tM?version=3"));
        em.persist(new Video(p47, "http://www.youtube.com/v/e_dc5e2eFLU?version=3"));
        em.persist(p47);
        Produit p48 = new Produit(29.39f, p46, PS3);
        em.persist(new Photo(p48, "http://www.planete-gt.com/wp-content/uploads/2010/06/need_for_speed_hot_pursuit.jpg"));
        em.persist(new Photo(p48, "http://images.caradisiac.com/logos/0/7/2/5/150725/S7-Need-for-Speed-Hot-Pursuit-derniere-video-avant-le-test-63497.jpg"));
        em.persist(new Video(p48, "http://www.youtube.com/v/w06n-ui79tM?version=3"));
        em.persist(new Video(p48, "http://www.youtube.com/v/e_dc5e2eFLU?version=3"));
        em.persist(p48);
        Produit p49 = new Produit(21.35f, p46, Wii);
        em.persist(new Photo(p49, "http://www.planete-gt.com/wp-content/uploads/2010/06/need_for_speed_hot_pursuit.jpg"));
        em.persist(new Photo(p49, "http://images.caradisiac.com/logos/0/7/2/5/150725/S7-Need-for-Speed-Hot-Pursuit-derniere-video-avant-le-test-63497.jpg"));
        em.persist(new Video(p49, "http://www.youtube.com/v/w06n-ui79tM?version=3"));
        em.persist(new Video(p49, "http://www.youtube.com/v/e_dc5e2eFLU?version=3"));
        em.persist(p49);
    }

    public Produit creeProduit(String nom, float prix, String distributeur, String description, CategorieAge categorieAge,
            CategorieProduit categorieProduit, Collection<String> urlPhotos, Collection<String> urlVideos) {
        if (nom == null || distributeur == null || description == null
                || categorieAge == null || categorieProduit == null) {
            return null;
        }
        if (nom.isEmpty() || prix < 0 || distributeur.isEmpty() || description.isEmpty()) {
            return null;
        }
        Produit produit = new Produit(nom, prix, distributeur, description, categorieProduit, categorieAge);
        if (urlPhotos != null) {
            for (String url : urlPhotos) {
                em.persist(new Photo(produit, url));
            }
        }
        if (urlVideos != null) {
            for (String url : urlVideos) {
                em.persist(new Video(produit, url));
            }
        }
        em.persist(produit);
        return produit;
    }
    
    public Produit creeProduit(float prix, Collection<Produit> produitsAutresCategories, CategorieProduit categorieProduit) {
        if (produitsAutresCategories == null || categorieProduit == null || prix < 0 || produitsAutresCategories.isEmpty()) {
            return null;
        }
        for(Produit p : produitsAutresCategories){
            if(p.getCategorieProduit().equals(categorieProduit))
                return null;
            for(Produit p2 : p.getProduitsAutresCategories()){
                if(p2.getCategorieProduit().equals(categorieProduit))
                return null;
            }
        }
        ArrayList<Produit> produits = new ArrayList<Produit>(produitsAutresCategories);
        Produit produit = new Produit(prix, produits.get(0), categorieProduit);
        for(Produit p : produitsAutresCategories){
            produit.addProduitAutreCategorie(p);
        }
        em.persist(produit);
        return produit;
    }

    public Produit modifierProduit(Produit produitAModifier, String nom, float prix, String distributeur, String descricption,
            CategorieAge categorieAge, CategorieProduit categorieProduit){
        if(produitAModifier == null)
            return null;
        if(categorieProduit != null){
            for(Produit produit : produitAModifier.getProduitsAutresCategories()){
                if(produit.getCategorieProduit().equals(categorieProduit))
                    return null;
            }
        }
        if(nom != null && !nom.isEmpty())
            produitAModifier.setNom(nom);
        if(prix >= 0)
            produitAModifier.setPrix(prix);
        if(distributeur != null && !distributeur.isEmpty())
            produitAModifier.setDistributeur(distributeur);
        if(descricption != null && !descricption.isEmpty())
            produitAModifier.setDescription(descricption);
        if(categorieAge != null)
            produitAModifier.setCategorieAge(categorieAge);
        if(categorieProduit != null){
            produitAModifier.setCategorieProduit(categorieProduit);
        }
        em.merge(produitAModifier);
        return produitAModifier;
    }
    
    public Produit modifierProduitSupprimerTag(Produit produitAModifier, Tag tag){
        if(produitAModifier == null || tag == null)
            return null;
        produitAModifier.removeTag(tag);
        em.merge(produitAModifier);
        return produitAModifier;
    }
    
    public Produit modifierProduitAjouterTag(Produit produitAModifier, Tag tag){
        if(produitAModifier == null || tag == null)
            return null;
        produitAModifier.addTag(tag);
        em.merge(produitAModifier);
        return produitAModifier;
    }
    
    public Produit modifierProduitSupprimerPhoto(Produit produitAModifier, Photo photo){
        if(produitAModifier == null || photo == null)
            return null;
        produitAModifier.removePhoto(photo);
        em.merge(produitAModifier);
        return produitAModifier;
    }
    
    public Produit modifierProduitAjouterPhoto(Produit produitAModifier, String urlPhoto){
        if(produitAModifier == null || urlPhoto == null || urlPhoto.isEmpty())
            return null;
        em.persist(new Photo(produitAModifier, urlPhoto));
        return produitAModifier;
    }
    
    public Produit modifierProduitSupprimerVideo(Produit produitAModifier, Video video){
        if(produitAModifier == null || video == null)
            return null;
        produitAModifier.removeVideo(video);
        em.merge(produitAModifier);
        return produitAModifier;
    }
    
    public Produit modifierProduitAjouterVideo(Produit produitAModifier, String urlVideo){
        if(produitAModifier == null || urlVideo == null || urlVideo.isEmpty())
            return null;
        em.persist(new Video(produitAModifier, urlVideo));
        return produitAModifier;
    }
    
    public Collection<Produit> getAllProduits() {
        Query q = em.createQuery("select o from Produit o", Produit.class);
        return q.getResultList();
    }

    public long getNombreDeProduit() {
        Query q = em.createQuery("Select Count(o) From Produit o", Produit.class);
        return (Long) q.getResultList().get(0);
    }

    public Collection<Produit> getAllProduits(int start, int offset) {
        if (start < 0 || offset < 0) {
            return null;
        }
        Query q = em.createQuery("select o from Produit o", Produit.class);
        q.setFirstResult(start);
        q.setMaxResults(offset);
        return q.getResultList();
    }

    public Collection<Produit> getAllProduitsByMotCle(int start, int offset, String motCle) {
        if (start < 0 || offset < 0) {
            return null;
        }
        Query q = em.createQuery("select o from Produit o where UPPER(o.nom) like UPPER('%" + motCle + "%')", Produit.class);
        q.setFirstResult(start);
        q.setMaxResults(offset);
        return q.getResultList();
    }

    public Produit getProduitById(int id) {
        Query q = em.createQuery("select o from Produit o where o.id=" + id, Produit.class);
        if (q.getResultList().size() <= 0) {
            return null;
        }
        return (Produit) q.getResultList().get(0);
    }

    public Produit getProduitById(String id) {
        try {
            int id2 = Integer.parseInt(id);
            return getProduitById(id2);
        } catch (NumberFormatException e) {
            return null;
        }
    }

    public Collection<Produit> getProduitsByName(String nom) {
        if (nom == null) {
            return null;
        }
        if (nom.isEmpty()) {
            return null;
        }
        Query q = em.createQuery("select o from Produit o where o.nom like '" + nom + "'", Produit.class);
        return q.getResultList();
    }

    public Collection<Produit> getProduitsByCategorieProduitById(int idCategorieProduit) {
        Query q = em.createQuery("select o from Produit o where o.categorieProduit.id=" + idCategorieProduit, Produit.class);
        return q.getResultList();
    }

    public Collection<Produit> getProduitsByCategorieProduitByNom(int start, int offset, String nomCategorieProduit) {
        if(start < 0 || offset < 0)
            return null;
        Query q = em.createQuery("select o from Produit o where o.categorieProduit.nom like '" + nomCategorieProduit + "'", Produit.class);
        q.setFirstResult(start);
        q.setMaxResults(offset);
        return q.getResultList();
    }

    public long getNbProduitsByCategorieProduit(String nomCategorieProduit) {
        Query q = em.createQuery("select count(o) from Produit o where o.categorieProduit.nom like '" + nomCategorieProduit + "'", Produit.class);
        return (Long) q.getResultList().get(0);
    }

    public Collection<Produit> getProduitsByCategorieAgeById(int idCategorieAge) {
        Query q = em.createQuery("select o from Produit o where o.categorieAge.id=" + idCategorieAge, Produit.class);
        return q.getResultList();
    }

    public Collection<Produit> getProduitsByCategorieAgebyAge(int ageMinimum) {
        Query q = em.createQuery("select o from Produit o where o.categorieAge.ageMinimum=" + ageMinimum, Produit.class);
        return q.getResultList();
    }

    public Produit incrementerNombreDeConsultation(Produit produit) {
        if (produit == null) {
            return null;
        }
        produit.incrementerNombreDeConsultation();
        em.merge(produit);
        return produit;
    }

    public void suprimeProduitById(int id) {
        Produit produit = getProduitById(id);

        Collection<Produit> produitsAutresCategories = new ArrayList<Produit>(produit.getProduitsAutresCategories());
        for (Produit produitAutresCategories : produitsAutresCategories) {
            produitAutresCategories.removeProduitAutrecategorie(produit);
        }
        Collection<Commentaire> commentaires = null;
        if((commentaires = gestionnaireCommentaires.getCommentaireByProduit(produit)) != null){
            for (Commentaire commentaire : commentaires) {
                em.remove(commentaire);
            }
        }
        Collection<Note> notes = null;
        if((notes = gestionnaireNotes.getNoteByProduit(produit)) != null){
            for (Note note : notes) {
                em.remove(note);
            }
        }
        em.remove(produit);
    }
}
